package Router2Core

import (
	"errors"
	"fmt"
	AnalysisAny "gitee.com/fotomxq/weeekj_core/v5/analysis/any"
	BaseConfig "gitee.com/fotomxq/weeekj_core/v5/base/config"
	BaseIPAddr "gitee.com/fotomxq/weeekj_core/v5/base/ipaddr"
	BaseTempFile "gitee.com/fotomxq/weeekj_core/v5/base/temp_file"
	BaseVcode "gitee.com/fotomxq/weeekj_core/v5/base/vcode"
	BlogCore "gitee.com/fotomxq/weeekj_core/v5/blog/core"
	BlogExam "gitee.com/fotomxq/weeekj_core/v5/blog/exam"
	IOTDevice "gitee.com/fotomxq/weeekj_core/v5/iot/device"
	IOTSensor "gitee.com/fotomxq/weeekj_core/v5/iot/sensor"
	MallCore "gitee.com/fotomxq/weeekj_core/v5/mall/core"
	MapCityData "gitee.com/fotomxq/weeekj_core/v5/map/city_data"
	MapRoom "gitee.com/fotomxq/weeekj_core/v5/map/room"
	OrgCoreCore "gitee.com/fotomxq/weeekj_core/v5/org/core"
	OrgSign "gitee.com/fotomxq/weeekj_core/v5/org/sign"
	OrgSubscription "gitee.com/fotomxq/weeekj_core/v5/org/subscription"
	RouterAPIRunBase "gitee.com/fotomxq/weeekj_core/v5/router/api/run_base"
	ServiceHousekeeping "gitee.com/fotomxq/weeekj_core/v5/service/housekeeping"
	ServiceInfoExchange "gitee.com/fotomxq/weeekj_core/v5/service/info_exchange"
	ServiceOrder "gitee.com/fotomxq/weeekj_core/v5/service/order"
	ServiceUserInfo "gitee.com/fotomxq/weeekj_core/v5/service/user_info"
	ServiceUserInfoCost "gitee.com/fotomxq/weeekj_core/v5/service/user_info_cost"
	TMSTransport "gitee.com/fotomxq/weeekj_core/v5/tms/transport"
	ToolsCommunication "gitee.com/fotomxq/weeekj_core/v5/tools/communication"
	UserChat "gitee.com/fotomxq/weeekj_core/v5/user/chat"
	UserCore "gitee.com/fotomxq/weeekj_core/v5/user/core"
	UserLogin "gitee.com/fotomxq/weeekj_core/v5/user/login"
	UserMessage "gitee.com/fotomxq/weeekj_core/v5/user/message"
	UserSubscription "gitee.com/fotomxq/weeekj_core/v5/user/subscription"
)

func moduleInit() (err error) {
	//配置模块
	if err = BaseConfig.Init(); err != nil {
		err = errors.New("base config, " + err.Error())
		err = nil
		//return
	}
	if err = BaseIPAddr.Init(); err != nil {
		err = errors.New("base ipaddr, " + err.Error())
		return
	}
	//图形验证码
	if err = BaseVcode.Init(); err != nil {
		err = errors.New("base vcode, " + err.Error())
		return
	}
	//临时文件
	BaseTempFile.Init()

	///////////////////////////////////////////////////////////////////////////////////
	//工具
	///////////////////////////////////////////////////////////////////////////////////
	//通讯
	ToolsCommunication.Init()

	///////////////////////////////////////////////////////////////////////////////////
	//地图模块
	///////////////////////////////////////////////////////////////////////////////////
	//城市模块
	if err = MapCityData.Init(); err != nil {
		err = errors.New("map city data, " + err.Error())
		return
	}

	///////////////////////////////////////////////////////////////////////////////////
	//用户服务
	///////////////////////////////////////////////////////////////////////////////////
	//登陆服务
	UserLogin.Init(fmt.Sprint(AppName, AppVersion))

	///////////////////////////////////////////////////////////////////////////////////
	//用户
	///////////////////////////////////////////////////////////////////////////////////
	//用户基础
	UserCore.Init()
	//用户订阅
	UserSubscription.Init()
	//用户消息
	UserMessage.Init()
	//用户聊天室
	UserChat.Init()

	///////////////////////////////////////////////////////////////////////////////////
	//行政
	///////////////////////////////////////////////////////////////////////////////////
	//组织核心
	err = OrgCoreCore.Init()
	if err != nil {
		err = errors.New("org core core, " + err.Error())
		return
	}
	//组织订阅
	OrgSubscription.Init()
	//组织签名
	if err = OrgSign.Init(); err != nil {
		err = errors.New("org sign, " + err.Error())
		return
	}

	///////////////////////////////////////////////////////////////////////////////////
	//设备
	///////////////////////////////////////////////////////////////////////////////////
	//设备
	IOTDevice.Init()
	//传感器
	IOTSensor.Init()

	///////////////////////////////////////////////////////////////////////////////////
	//地图
	///////////////////////////////////////////////////////////////////////////////////
	//房间服务
	MapRoom.Init()

	///////////////////////////////////////////////////////////////////////////////////
	//服务
	///////////////////////////////////////////////////////////////////////////////////
	//订单
	ServiceOrder.Init()
	//档案
	ServiceUserInfo.Init()
	//信息档案消耗模块
	ServiceUserInfoCost.Init()
	//服务配单
	ServiceHousekeeping.Init()
	//信息交互模块
	ServiceInfoExchange.Init()

	///////////////////////////////////////////////////////////////////////////////////
	//配送
	///////////////////////////////////////////////////////////////////////////////////
	//配送
	TMSTransport.Init()

	///////////////////////////////////////////////////////////////////////////////////
	//商城
	///////////////////////////////////////////////////////////////////////////////////
	//商城
	MallCore.Init()

	///////////////////////////////////////////////////////////////////////////////////
	//博客
	///////////////////////////////////////////////////////////////////////////////////
	BlogCore.Init()
	BlogExam.Init()

	///////////////////////////////////////////////////////////////////////////////////
	//统计
	///////////////////////////////////////////////////////////////////////////////////
	AnalysisAny.Init()

	///////////////////////////////////////////////////////////////////////////////////
	//外部
	///////////////////////////////////////////////////////////////////////////////////
	//系统配置维护
	RouterAPIRunBase.Init()
	//反馈
	return
}
